﻿/** 有界面的情况下使用宏类的实例,使用的是CommonMacro类和新定义的一个MyUI的子类

  By setycyas @2023-02-04
*/

/* 全局设定
*/
#Warn
#MaxThreadsPerHotkey 1
SetWorkingDir(A_ScriptDir)
#Include "..\Class\FaceDetector.2.ahk"
#Include "..\Class\CommonMacro.2.ahk"
#Include "..\Class\MyUI.2.ahk"
SendMode("Input")

/* 制作一个MyUI的子类,显示如何使用接口
*/
class New_UI extends MyUI {

  DEFAULT_HOTKEYS := "w,q,2,3,r,,"
  _delayEdit := "" ;记录连发延时参数的文本框

  /* 重写接口
  */
  ;自定义gui组件标签页,增加一个连发延时
  _customGui(){
    this._myGui.Add("Text", "x+20 y+20 w100", "连发延时(不小于30):")
    this._delayEdit := this._myGui.Add("Edit", "xp+80 yp-3 w100", 50)
  }
  ;提交数据后更新连发延时,首次提交数据时安装方向检测
  _onSubmitEnd(){
    local delay := this._delayEdit.Text
    delay := Max(30, delay)
    this._macro.autoFireDelay := delay-this._macro.pressDuration
    ;安装方向检测
    if (this._submitTimes == 0){
      this._macro._face.winTitle := this._winTitle
      this._macro._face.setup()
    }
  }

}

/* 有界面使用的实例
*/
face := FaceDetector() ;方向检测对象
macro := CommonMacro(face, ["x","e"]) ;宏对象,有界面时第二个参数可以随便写但长度不要小于2
;宏方案预设,用于菜单
preset := Map("龙与地下城2", ["连发A", "下前A", "下上A", "A后防御", "下前B"],
  "恐龙快打", ["连发A", "下上A", "", "", "前冲A"])
;新建界面并设定
ui := New_UI("界面实例", macro ,preset)
ui.setup()